草庐IT

带指针的 C++ vector

全部标签

c++ - vector.size() 的 GDB 错误值

一个简单的vector.push_back()导致我的代码出现一些错误:#includeusingnamespacestd;intmain(intargc,constchar*argv[]){vectorstack;stack.push_back(1);stack.push_back(1);//stack.size()becomes467369971afterthisstack.push_back(1);stack.push_back(1);...morepush_back()s...return0;}我正在使用GDB检查它的行为...奇怪的是stack.size()在第二个push_

c++ - 插入 vector

我认为这段看似无辜的代码相当危险的想法是否正确?templatevoidinsertLast(std::vector&v){if(v.empty())return;v.insert(v.begin(),v.back());}阅读一些答案后的一些澄清..好吧,我并不是真的在问如何将一个元素插入到一个vector中,而是我做了一个虚拟的情况来质疑一个原则。换句话说,你认为有必要制作一个拷贝吗(这里创建了一个临时的..并且保证对临时对象的const引用存在):templatevoidinsertLast(std::vector&v){if(v.empty())return;v.insert(

c++ - 如何使用 C++ STL 和 boost 判断两个排序 vector 是否相交

我有两个已排序的C++std::vector,没有重复项(您可以称它们为集合),我想知道它们是否相交。我不需要公共(public)元素的vector。我在这个问题的末尾使用boost“范围”库中的boost::set_intersection算法编写了代码(http://www.boost.org/doc/libs/1_50_0/libs/range/doc/html/range/reference/algorithms/set.html)。此代码避免构建公共(public)元素集,但会扫描vector的所有元素。是否可以在不使用循环的情况下使用boost和C++STL改进我的函数“相

c# - 从 C# 调用包含函数指针的 DLL 函数

我有一个用C++编写的DLL,其中包含导出的函数,该函数具有用作回调函数的函数指针。//C++DllExportunsignedintDllFunctionPointer(unsignedinti,unsignedint(*TimesThree)(unsignedintnumber)){returnTimesThree(i);}我有一个CSharp应用程序,我想用它来调用DLL函数。//C#publicunsafedelegateSystem.UInt32CallBack(System.UInt32number);classProgram{[DllImport("SimpleDLL.d

c++ - gsl_vector 有 count_if 函数吗? C/C++

我正在使用gnu科学图书馆(GSL)。假设我有一个像这样的gsl_vector:70-658010-2这是一个包含正数、负数和零作为元素的vector。我想统计这个gsl_vector中非零元素或零元素的个数。我知道C++Vector有一个名为count_if的函数。但是我搜索了gsl_vector.h和gsl_blas.h,没有能与之匹敌的功能。我可以通过gsl_vector_get()评估它们来遍历所有元素,然后问if问题。intcounter=0;for(inti=0;i但是我想了将近一天,GSL中是否已经有这样一个效率更高的函数。或者gsl_array有一个count_if函数

c++ - 如何获得指向编译器选择的重载函数的函数指针?

如何获得指向编译器在检查参数后选择的重载函数的函数指针?在这个例子中:#includevoidMyFunction(floata){}voidMyFunction(inta){}intmain(){floata;MyFunction(a);void(*manualFunctionPointer)(float);manualFunctionPointer(a);//automaticFunctionPointer=?}我已指定我想要一个函数指针,该函数指针指向接受float并返回void的函数。编译器当然可以自己解决这个问题,因为MyFunction(a)调用调用了正确的函数。有没有办法

c++ - 带有成员函数指针的部分模板类特化

我有以下工作代码:classperson{private:intage_;public:person():age_(56){}voidage(inta){age_=i;}}templateclassholder;templateclassholder{public:typedeftypenameT::value_typevalue_type;public:explicitholder():setter(FUNC){std::coutsetter;};templateclassholder{public:explicitholder(){std::couth1;holderh2;//th

c++ - 如何正确调整 vector 大小?

来自thisanswer:Oneplacewhereyoucanrunintoaperformanceissue,isnotsizingthevectorcorrectlytobeginwith.那么,当vector是一个类的属性时,如何正确调整其大小呢?是否有(最佳)方法来设置vector的容量(在初始化时)? 最佳答案 是的。查看reserve方法。它将要求vector的容量至少足以包含作为其参数发送的元素数。如果您可以预期要存储在vector中的项目数的上限,那么您可以在vector中保留该数量的空间。上面链接的例子-//ve

c++ - 预期指针错误 vector 的迭代器;

我正在使用一个指针vector来创建一个数据结构,但发现我收到了一个似乎不清楚的错误。这是头文件中的基本代码#includeusingnamespacestd;templateclassST{classSTNode{public:STNode(Keyk,Valuev):key(k),value(v){}~STNode(){}Keykey;Valuevalue;};typedeftypenameST::STNodeNode;public:ST():v(NULL){v=newvector();}~ST(){//vectorcontainsallocatedobjectsfor(vector

c++ - 给定 vector 和角度的 Ogre 相机方向

在Ogre3d中,我想设置方向,给相机View一个“正常”的vector(作为指向我眼睛前方的箭头)和一个旋转相机的角度(比如倾斜我的头)。我可以用这个技巧让它工作:floatangle=10;/*tiltmyhead10degreestoright*/Vector3vector(0,0,1);/*zaxispointingforward*/Vector3target=camera->getPosition()+vector;camera->lookAt(target);camera->roll(Degree(angle));我不确定这是否适用于每个值,而且看起来很老套。我正在寻找更正